const { formatTime } = require('../../utils/util.js')
const { getApiUrl } = require('../../config/config.js')

Page({
  data: {
    listType: 'publish', // 列表类型：publish(我的发布)、like(我的点赞)、collection(我的收藏)
    postList: [],
    loading: true,
    userId: null,
    pageTitle: '我的帖子'
  },

  onLoad(options) {
    // 获取当前用户ID
    const userInfo = wx.getStorageSync('userInfo')
    const userId = userInfo ? userInfo.id : null
    
    // 设置列表类型和用户ID
    const listType = options.type || 'publish'
    let pageTitle = '我的帖子'
    
    switch (listType) {
      case 'like':
        pageTitle = '我的点赞'
        break
      case 'collection':
        pageTitle = '我的收藏'
        break
      default:
        pageTitle = '我的帖子'
    }
    
    this.setData({
      listType,
      userId,
      pageTitle
    })
    
    // 加载数据
    this.loadPostList()
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.loadPostList().then(() => {
      wx.stopPullDownRefresh()
    })
  },

  // 返回上一页
  goBack() {
    wx.navigateBack({
      delta: 1
    })
  },

  // 加载帖子列表
  async loadPostList() {
    this.setData({ loading: true })
    
    try {
      let url = ''
      const { listType, userId } = this.data
      
      // 构建请求URL
      switch (listType) {
        case 'like':
          url = getApiUrl(`/post/like/list/${userId}`)
          break
        case 'collection':
          url = getApiUrl(`/post/collection/list/${userId}`)
          break
        case 'publish':
          url = getApiUrl(`/post/publish/list/${userId}`)
          break
      }
      
      const res = await new Promise((resolve, reject) => {
        wx.request({
          url,
          method: 'GET',
          header: {
            'token': wx.getStorageSync('token')
          },
          timeout: 10000, // 10秒超时
          success: resolve,
          fail: reject
        })
      })
      
      console.log('API Response:', res.data)
      
      if (res.data.code === 200) {
        const newPosts = res.data.data || []
        
        // 格式化时间
        newPosts.forEach(post => {
          post.formattedTime = this.formatPostTime(post.createTime)
        })
        
        this.setData({
          postList: newPosts,
          loading: false
        })
      } else {
        console.error('API Error:', res.data)
        this.setData({ loading: false })
        wx.showToast({
          title: res.data.message || '加载失败',
          icon: 'none'
        })
      }
    } catch (error) {
      console.error('Load post list failed:', error)
      this.setData({ loading: false })
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      })
    }
  },

  // 格式化帖子时间
  formatPostTime(timeStr) {
    if (!timeStr) return '未知时间'
    
    const postTime = new Date(timeStr)
    const now = new Date()
    const diffMs = now - postTime
    
    // 转换为秒
    const diffSec = Math.floor(diffMs / 1000)
    
    if (diffSec < 60) {
      return '刚刚'
    } else if (diffSec < 3600) {
      return Math.floor(diffSec / 60) + '分钟前'
    } else if (diffSec < 86400) {
      return Math.floor(diffSec / 3600) + '小时前'
    } else if (diffSec < 2592000) {
      return Math.floor(diffSec / 86400) + '天前'
    } else {
      return formatTime(postTime, 'yyyy-MM-dd')
    }
  },

  // 跳转到帖子详情
  navigateToPost(e) {
    const id = e.currentTarget.dataset.id
    
    wx.navigateTo({
      url: `/pages/details/details?id=${id}`,
      fail: (err) => {
        console.error('Navigation failed:', err)
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none'
        })
      }
    })
  },

  // 获取帖子类型名称
  getTypeName(type) {
    const typeMap = {
      0: '综合',
      1: '校园',
      2: '学习',
      3: '情感',
      4: '生活',
      5: '求助',
      6: '吐槽',
      7: '闲置',
      8: '其他'
    }
    return typeMap[type] || '未知'
  },

  // 获取帖子类型颜色
  getTypeColor(type) {
    const colorMap = {
      0: '#ff6b6b', // 综合
      1: '#5ac8fa', // 校园
      2: '#4cd964', // 学习
      3: '#ff9500', // 情感
      4: '#34aadc', // 生活
      5: '#007aff', // 求助
      6: '#ff3b30', // 吐槽
      7: '#5856d6', // 闲置
      8: '#8e8e93'  // 其他
    }
    return colorMap[type] || '#8e8e93'
  },

  // 判断帖子是否有图片
  hasImages(post) {
    return post.image1 || post.image2 || post.image3 || post.image4 || 
           post.image5 || post.image6 || post.image7 || post.image8 || post.image9
  },

  // 计算帖子图片数量
  countImages(post) {
    let count = 0
    for (let i = 1; i <= 9; i++) {
      if (post[`image${i}`]) {
        count++
      }
    }
    return count
  },

  // 格式化浏览量
  formatViewCount(count) {
    if (!count && count !== 0) return '0'
    
    if (count >= 1000) {
      return (count / 1000).toFixed(1) + 'k'
    }
    return count.toString()
  }
})